/**
* +--------------------------------------------------------+
* @Created by Goland.
* @Category api_response.go
* @Depiction
* @Author hwy <429208948@qq.com>
* @Date 2021/9/18  14:57
* +--------------------------------------------------------+
 */
package response

import (
	"github.com/gogf/gf/net/ghttp"
)

// 返回结果对象
type JsonResult struct {
	Code  int         `json:"code"`  // 响应编码：0成功 401请登录 403无权限 500错误
	Msg   string      `json:"msg"`   // 消息提示语
	Data  interface{} `json:"data"`  // 数据对象
	Count int         `json:"count"` // 记录总数
}

// 标准成功返回结果数据结构封装。
func SuccessResp(r *ghttp.Request, code int, message string, data ...interface{}) {
	responseData := interface{}(nil)
	if len(data) > 0 {
		responseData = data[0]
	}
	r.Response.WriteJsonExit(JsonResult{
		Code: code,
		Msg:  message,
		Data: responseData,
	})
}

// 标准失败返回结果数据结构封装。
func ErrorResp(r *ghttp.Request, code int, message string) {
	r.Response.WriteJsonExit(JsonResult{
		Code: code,
		Msg:  message,
	})
}

// 标准列表返回结果数据结构封装。
func ListResp(r *ghttp.Request, code int, message string, count int, data ...interface{}) {
	responseData := interface{}(nil)
	if len(data) > 0 {
		responseData = data[0]
	}
	r.Response.WriteJsonExit(JsonResult{
		Code:  code,
		Msg:   message,
		Data:  responseData,
		Count: count,
	})
}
